package com.tengju.data.infrastructure.repository.meta.convert;

import com.tengju.data.domain.model.analysis.Meta;
import com.tengju.data.domain.model.analysis.MetaType;
import com.tengju.data.domain.model.analysis.SensitiveLevel;
import com.tengju.data.infrastructure.repository.meta.dataobject.MetaDO;
import org.apache.commons.lang3.StringUtils;

import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author chenhang
 * @Date 2021/5/4
 */
public class MetaConvert {
    public static Meta toMeta(MetaDO metaDO) {
        if (metaDO == null) {
            return null;
        }
        return new Meta(
                metaDO.getColName(),
                metaDO.getShowName(),
                metaDO.getFrontPageSort(),
                metaDO.getMetaType() == null ? MetaType.None :MetaType.valueOf(metaDO.getMetaType()),
                metaDO.getSensitiveLevel() == null ? SensitiveLevel.low : SensitiveLevel.valueOf(metaDO.getSensitiveLevel()),
                StringUtils.isEmpty(metaDO.getSqlColName()) ? metaDO.getColName() : metaDO.getSqlColName(),
                metaDO.getChartType(),
                metaDO.getColumnGroup(),
                metaDO.getIsShow(),
                metaDO.getBindMetas() == null ? null : Stream.of(metaDO.getBindMetas().split(",")).collect(Collectors.toList()),
                metaDO.getFormula(),
                metaDO.getOrderKey() == null ? metaDO.getSqlColName() : metaDO.getOrderKey()
        );
    }
}
